package com.svse.services.impl;

import com.svse.services.RedisRedPacketService;
import com.svse.services.UserRedPacketService;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;

/**
 * @author LiYuhang
 * @version 0.1
 * @application
 * @Copyright 上海危网信息科技有限公司版权所有
 * @company wwsoft
 * @Date 2019/11/25 15:51
 */
@Service
public class UserRedPacketServiceImpl  implements UserRedPacketService {
    @Autowired
    private RedisTemplate redisTemplate=null;

    @Autowired
    private RedisRedPacketService redisRedPacketService=null;


    String script = "local listKey = 'red_packet_list_'..KEYS[1] \n"// 被抢红包列表 key
            + "local redPacket = 'red_packet_'..KEYS[1] \n"       // 当前被抢红包 key
            + "local stock = tonumber(redis.call('hget', redPacket, 'stock')) \n"// 读取当前红包库存
            + "if stock <= 0 then return 0 end \n"                // 没有库存，返回0
            + "stock = stock -1 \n"                               // 库存减1
            + "redis.call('hset', redPacket, 'stock', tostring(stock)) \n"// 保存当前库存
            + "redis.call('rpush', listKey, ARGV[1]) \n"          // 往Redis链表中加入当前红包信息
            + "if stock == 0 then return 2 end \n"                // 如果是最后一个红包，则返回2，表示抢红包已经结束，需要将Redis列表中的数据保存到数据库中
            + "return 1 \n";

    // 在缓存LUA脚本后，使用该变量保存Redis返回的32位的SHA1编码，使用它去执行缓存的LUA脚本[加入这句话]
    String sha1=null;


    @Override
    public Long grapRedPacketByRedis(Long redPacketId, Long userId) {

        return null;
    }
}
